又一个开源第一!飞桨联合百舸,Stable Diffusion推理速度遥遥领先
The following article is from 飞桨PaddlePaddle Author 飞桨
AIGC(AI Generated Content),即通过人工智能方法生成内容,是当前深度学习最热门的方向之一。其在绘画、写作等场景的应用也一直层出不穷,其中,AI 绘画是大家关注和体验较多的方向。
Diffusion系列文生图模型可以实现 AI 绘画应用,其一经推出就受到广泛关注,开启了一波“全民调教 AI 作画”的潮流,激起了大量的应用需求。与此同时,百度推出的知识增强跨模态大模型——文心ERNIE-ViLG 2.0在 AI 作画领域取得新突破。该模型在文本生成图像公开权威评测集 MS-COCO 和人工盲评上均超越了 Stable Diffusion、DALL-E 2等模型,当前在该领域取得了最好的效果,在语义可控性、图像清晰度、中国文化理解等方面均展现出了显著的优势。
开发者和科技爱好者可以将文心ERNIE-ViLG 2.0 API(wenxin.baidu.com/ernie-vilg)灵活方便地集成到产品中。同时,基于文心ERNIE-ViLG 2.0大模型,百度也推出 AI 艺术与创意辅助平台——文心一格(yige.baidu.com),以满足更多的人在 AI 作画方面的需求。
向右滑动查看文心一格模型效果图~
AI绘画模型推理算力及显存需求随图像分辨率增大而指数级增加,同时图像生成需要循环采样数十次,产业落地动辄需要高昂成本的部署集群,严重阻碍了 AIGC模型大规模商业化落地。为此,百度飞桨一直致力于大模型的训练、压缩、推理端到端优化,实现低成本的模型部署上线,助力 AIGC模型快速产业落地。
飞桨深度优化的 Stable Diffusion模型,在单卡NVIDIA A100(80G)上推理速度和显存利用率全面超越同类产品,取得业界第一的领先优势。百度自研中文 AI绘画ERNIE-ViLG模型,在昆仑芯R200(32GB)卡上推理,全面超越同系列主流推理卡,并已成功批量部署于文心一格创意平台。
▎GPU 推理性能数据
下图展示了分别使用 PaddlePaddle、TensorRT、AITemplate和Diffusers(PyTorch)4种深度学习框架或推理引擎对 Stable Diffusion 进行推理时的性能表现。可以看出,基于 PaddlePaddle 对 Stable Diffusion 进行推理时,512*512图像生成速度68.2 iters/s,实现0.76s 出图。其推理速度是 Diffusers(PyTorch)的4倍,比 TensorRT 最优速度快7.9%,同时显存占用仅为 TensorRT 的43%。
▎昆仑芯R200性能数据
昆仑芯R200性能数据在 dpm-25steps算法下,生成1024*1024图像时的推理速度相比同能力的主流推理卡快20%。同时,R200拥有32G 显存,能够生成更高分辨率的图片,可以推理更大的模型,为用户带了高性价比的选择。
不同硬件跑ERNIE-ViLG的推理速度及显存占用对比
向右滑动查看飞桨Stable Diffusion模型效果图~
▎快速体验
Stable Diffusion训练推理全流程已在飞桨扩散模型工具箱中开源
参考链接
https://github.com/PaddlePaddle/PaddleNLP/tree/develop/ppdiffusers
同时,对于飞桨Stable Diffusion 在 GPU 和昆仑芯上的高性能部署,FastDeploy部署工具已经提供了开箱即用的部署体验。
参考链接
https://github.com/PaddlePaddle/FastDeploy/tree/develop/examples/multimodal/stable_diffusion
与此同时,随着大模型应用的不断出圈,AIGC 相关的应用落地需求也不断激增,因此,百度百舸联合飞桨团队将飞桨训推大模型的能力优势与 AI 加速组件 AIAK(AI Accelerate Kit)完美融合,形成全新产品“飞桨云原生大模型开发工具”,显著提升了云用户大模型任务的开发和部署效率,并加速了生成式 AI 的工程化落地。作为业界首个经过全流程验证的大模型开发工具,飞桨云原生大模型开发工具不仅拥有更极致的性能,还可以让开发者体验到千亿大模型的的分布式训练和推理功能。
▎备注说明
■ 百度百舸
AI 异构计算平台,包含 AI计算、AI存储、AI加速、AI容器四大核心套件,具有高性能、高弹性、高速互联、高性价比等特性。充分汲取了百度异构计算平台多年的技术积累,深度融合推荐、无人驾驶、生命科学、NLP 等场景的实践经验,能为 AI 场景提供软硬一体解决方案,加速 AI 工程化落地。
■ AIAK
结合飞桨与百度云百舸整体方案优势联合推出的 AI 加速套件,用来加速基于飞桨等深度学习框架开发的 AI 应用,能极大提升分布式训练和推理的性能,大幅增加异构资源使用效率。
■ 飞桨云原生大模型开发工具
业界首个经过全流程完整验证的大模型开发工具,支撑 GPT-3、Bloom、Stable Diffusion 等多个大模型训练、微调、压缩、推理的流畅开发体验。
01
性能优化核心解读
飞桨原生推理库Paddle Inference 的领先效果、基于飞桨框架领先的架构设计和针对 Stable Diffsuion模型的深度优化,主要体现在如下几个方面:
▎Flash Attention
飞桨一直致力于大模型推理优化,支持多种通用 Transformer 类结构的高性能推理优化。在 Stable Diffusion模型推理中,飞桨集成的高性能的 Flash Attention kernel,通过将 attention 中的 softmax计算进行拆解、分片计算,大量减少推理过程中 self-attention 和 cross-attention计算对显存的访问次数,同时实现了推理加速和显存优化。
▎Norm融合
Norm 是 Stable Diffusion 中 U-Net 常用算子,主要分为 LayerNorm 和 GroupNorm。LayerNorm 和 GroupNorm算子作为批规约运算,能够很好地和前后的 elementwise 类型、激活类型算子进行融合,消除算子间的显存访问。飞桨对 LayerNorm 和 GroupNorm 与前后算子的4种不同 pattern 进行了融合,共融合了93个 Norm结构,提升了3%的推理性能。
▎混合 Layout 计算
通过对模型张量排布匹配优化,支持不同的 Layout 消除和合并 U-Net 中的转置操作,提高了推理速度同时也能降低了运行显存占用,共减少了32次转置操作,带来了3~4%的推理性能提升。
▎Scheduler 优化
对 PPDiffusers库中的 scheduler 运算逻辑进行了重新整合梳理,将 scheduler.step 中的 GPU 算子发射数量由约12个减小至7个,同时通过参数预计算的方法,消除了采样循环中 scheduler运算的 CPU 计算以及 GPU 同步开销。
▎推理显存优化
经过飞桨框架的算子融合引擎处理,Stable Diffusion模型中 U-Net模型的独立算子数量减少60%,显存占用下降27%。针对 U-Net模型的 Layout 优化消除了转置变换带来的额外显存消耗,能够使整体显存占用降低约19%。同时,针对 ERNIE-ViLG 2.0文心AI作画大模型,飞桨框架提供了推理 workspace 复用技术,使 ERNIE-ViLG 2.0模型显存占用下降37%,极大降低了 ERNIE-ViLG 2.0文心AI作画大模型的部署成本。
基于飞桨原生推理库Paddle Inference 的高性能架构设计,结合上述优化点,飞桨Stable Diffusion模型能实现在单卡80G A100(SXM4)上,512*512分辨率生成图像(50 iters)推理时延0.76s,推理速度达到68.2 iters/s,显存占用4.6G,显存占用方面和速度方面均为当前业界最优效果。
02
后续工作
飞桨在持续推进 AIGC模型、AI对话模型等大模型的优化,结合飞桨框架训推一体的核心能力,发布更多训练、压缩、推理端到端优化的高性能产业级大模型,并持续打磨部署端到端方案,助力大模型更全面产业化,欢迎各位开发者持续关注或反馈需求和建议。